Tracing is a common method to understand (i.e., profile) the dominant characteristics of a program code executed in a computing system. The trace is generally in form of a series of records, each referring to a point during program execution. A record typically contains the program counter address (PC) and information about content of the system registers, accessed memory addresses, operation types, and more.
Frequently, it is desirable to trace a computer implemented object during the execution of a program. In particular, it may be desirable to profile a target object when the object is addressed by an instruction of interest or at a point of interest during program execution or both. Object profiling provides for a detailed level of program tracing and may help determine optimal object placement in a system's cache, for example.
Complex and lengthy program traces are generally written to a file and are post-processed off-line. That is, the trace analysis is performed on a trace written to the file after the instruction accessing the object has been executed and often after the full execution of the program code to completion. As such, a target object's trace is, generally, not readily available at the point of execution for real-time analysis.